package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/** 集合的排序--String */
public class SortString {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("太清道德天尊");
        list.add("东方青帝青灵始老九炁天君");
        list.add("如来佛祖");
        list.add("承天效法后土皇地祇");
        list.add("九天应元雷声普化天尊");
        list.add("镇元子");
        System.out.println(list);

        Collections.sort(list,(o1,o2)->o1.length()-o2.length());
        /*
        Collections.sort(list, new Comparator<String>() {
            /*
            compare（）方法用于定义o1和o2比较大小的规则，并且返回值表示大小关系
            返回值实现的要求：
            1）如果返回值>0则表达的是o1>o2
            2)如果返回值<0则表达的是o1<o2
            3）如果返回值=0则表达的是o1=o2
            结论：
            1）前面的-后面的-------升序
            2）后面的-前面的-------倒序

            @Override
            public int compare(String o1, String o2) {
                //按字符串长度排序
                //return o1.length()-o2.length();//升序
                return o2.length()-o1.length();//降序
            }
        });

             */
        System.out.println(list);

        /*
        List<String> list = new ArrayList<>();
        list.add("jack");
        list.add("rose");
        list.add("jerry");
        list.add("black");
        list.add("Kobe");
        list.add("tom");
        System.out.println("list原始数据："+list);//[jack, rose, jerry, black, Kobe, tom]
        //对英文字符串排序时，会按首字母的ASCII码来排
        //若首字母相同时，则比较第二个字母的ASCII码，以此类推
        Collections.sort(list);
        System.out.println("list排序后数据："+list);//[Kobe, black, jack, jerry, rose, tom]


         */

    }
}

